﻿/**
 * 
 * @file FITKAcousticsSpectraManager.h
 * @brief  频谱管理器声明
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2024-10-21
 * 
 */
#ifndef _FITK_ACOUSTICS_SPECTRA_MANAGER_H___
#define _FITK_ACOUSTICS_SPECTRA_MANAGER_H___
 
#include "FITKAcousticsPhysicsAPI.h"
#include "FITK_Kernel/FITKCore/FITKAbstractDataManager.hpp"
#include "FITKAcousticsAbstractSpectra.h"

namespace Acoustics
{
    /**
     * @brief 频谱管理器声明
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2024-10-21
     */
    class FITKAcousticsPhysicsAPI FITKAcousticsSpectraManager : public Core::FITKAbstractDataObject,
            public Core::FITKAbstractDataManager<FITKAcousticsAbstractSpectra>
    {
        FITKCLASS(Acoustics, FITKAcousticsSpectraManager);
    public:
        /**
         * @brief Construct a new FITKAcousticsSpectraManager object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-21
         */
        explicit FITKAcousticsSpectraManager() = default;
        /**
         * @brief Destroy the FITKAcousticsSpectraManager object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-21
         */
        virtual ~FITKAcousticsSpectraManager() = default;
        /**
         * @brief 根据类型获取频谱
         * @param[i]  t             类型
         * @return QList <FITKAcousticsAbstractSpectra*> 
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-21
         */
        QList <FITKAcousticsAbstractSpectra*> getSpectraByType(
            FITKAcousticsAbstractSpectra::AcousticsSpectraType t);
        /**
         * @brief 重置全部频谱
         * @param[i]  HzList         频率列表
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-21
         */
        void resetSpectraValues(const QList<double> HzList);

    protected:
    private:
    };
}


#endif
